.\"   $Id: addrdsinsrec.3,v 1.1 2002/03/13 13:37:37 fred Exp $
.\" @(#)addrdsinsrec.1 1.11 93/08/18 ; Labo masi cao-vlsi
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
addrdsinsrec
.XE
.XS0 \n%
.ti 0.2i
addrdsinsrec
.XE0 \}
.TH ADDRDSINSREC 3 "October 1, 1997" "ASIM/LIP6" "RDS PHYSICAL FUNCTIONS"
.SH NAME
 addrdsinsrec \- adds a rectangle to an instance
.so man1/alc_origin.1
.SH SYNOPSIS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include"rdsnnn.h"
 rdsrec_list \(**addrdsinsrec( Instance, Name, Layer, X, Y, Dx, Dy )
   rdsins_list \(**Instance;
   char        \(**Name;
   char         Layer;
   long         X;
   long         Y;
   long         Dx;
   long         Dy;
.ft R
.fi
.SH PARAMETER
.TP 20
\fIInstance\fP
The instance which contains the rectangle to add.
.TP
\fIName\fP
Name of the rectangle to add.
.TP
\fILayer\fP
Layer of the rectangle to add.
.TP
\fIX,Y,DX,DY\fP
Dimensions of the the rectangle to add.
.SH DESCRIPTION
This function creates an adds a rectangle to an instance. The size of the user structure to add (if if exists) next to the structure rdsrec_list is defined by the field SIZE of the instance which has to contain the rectangle. The rectangle is chained to the head of the rectangles's list associated to the defined layer in parameters of the function addrdsinsrec(). The fields of the rectangle structure are modified as follows :
.PP
The field \fINAME\fP is set to \'Name\'.
.br
The field \fIX\fP is set to \'X\'.
.br
The field \fIY\fP is set to \'Y\'.
.br
The field \fIDX\fP is set to \'Dx\'.
.br
The field \fIDY\fP is set to \'Dy\'.
.br
The field \fIFLAGS\fP is modified with the value \'Layer\'.
.PP
\fINote\fP :
.PP 
\- This function uses MBK namealloc() function.
.PP
\- coordinates of the rectangle are related to the instance before geometrical transformation.
.SH RETURN VALUE
The pointer to the added rectangle. It is also the head of rectangles's list associated to the corresponding layer.
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"Rds202: rdsalloc error, can't continue !"
.ft R
.RS
it's impossible to allocate the memory size desired
.SH EXAMPLE
.ta 3n 6n 9n 12n 15n 18n 21n
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
        #include "mutnnn.h"
        #include "rdsnnn.h"
        #include "rtlnnn.h"
        typedef struct UserStruct
         {
           char \(**STRING;
           void \(**USER1;
         } UserStruct;
        # define POINTER_STRING(R)                                \\
                                                                  \\
          (((UserStruct \(**)((char \(**)(R)+sizeof(rdsrec_list)))->STRING )
         main()
          {
            rdsfig_list \(**RdsFigure;
            rdsins_list \(**Instance;
            rdsrec_list \(**Rectangle;
            char Layer;
            rdsrec_list \(**ScanRec;
            mbkenv();
            rdsenv();
            loadrdsparam();
            RdsFigure = addrdsfig ("core",sizeof ( UserStruct ) );
            Instance  = addrdsins (RdsFigure,"na2_y","and2",RDS_NOSYM,8,6);
            Rectangle = \fBaddrdsinsrec\fP (Instance,"Alu1",RDS_ALU1,2,4,12,1);
            POINTER_STRING( Rectangle ) = namealloc ("un_alu1");
            /\(**
               Displays caracteristics of all the rectangles of the instance
            \(**/
           for ( Layer = 0 ; Layer < RDS_MAX_LAYER ; Layer ++ )
            {
              for (
                     ScanRec  = Instance->LAYERTAB[Layer] ;
                     ScanRec != (rdsrec_list \(**) NULL      ;
                     ScanRec  = ScanRec->NEXT
                  )
               {
                 printf("Rectangle->LAYER = %s\\n",
                    RDS_LAYER_NAME[GetRdsLayer(ScanRec)]);
                 printf("Rectangle->NAME   = %s\\n",ScanRec->NAME);
                 printf("Rectangle->X      = %ld\\n",ScanRec->X);
                 printf("Rectangle->Y      = %ld\\n",ScanRec->Y);
                 printf("Rectangle->DX     = %ld\\n",ScanRec->DX);
                 printf("Rectangle->DY     = %ld\\n",ScanRec->DY);
                 printf("Rectangle->STRING = %s\\n",POINTER_STRING(ScanRec));
               }
            }
          }
.ft R
.fi
.SH SEE ALSO
.BR librds,
.BR delrdsinsrec,
.BR viewrdsins


.so man1/alc_bug_report.1

